package com.atwulidun.template12;

public abstract class SoyaMilk2 {
    // 制作豆浆方法：模板方法，用final修饰，不给子类重写
    final void make() {
        select();
        // 添加钩子方法的第二种方式：
        add();
        soak();
        mill();
    }

    protected void select() {
        System.out.println("精选上好的黄豆");
    }

    // 把add方法作为钩子方法，提供空的方法体，子类可以按照需要以决定要不要重写覆盖该方法
    // 纯豆浆不需要覆盖重写，而红豆和花生豆浆需要重写覆盖
    protected void add() {

    }

    protected void soak() {
        System.out.println("将黄豆和佐料一起浸泡");
    }

    protected void mill() {
        System.out.println("将黄豆和佐料一起打磨");
    }
}
